c语言的位运算符学习笔记
按位取反运算符~
每位的值取反
~(10010110) = 01101001
按位与运算符&
对应位只有2个操作数都为1结果才为1
(10001011)&(10111101)=10001001
用法:取掩码
我们经常会看到代码中有
a & 0xff
就是将低16位之外的位全部置0,仅保留低16位的值
按位或运算符|
对应位只要有1个操作数为1结果就为1
(10001011)|(10111101)=10111111
用法:打开位
譬如MASK = 0x00000100
任意值 rand |= MASK 其实就是将从低位开始第三位设置成1,其它位保持不变
按位异或运算符^
对应位相同则为0,不相同结果为1
(10001011)^(10111101)=00110110
用法:转置位
移位运算符
左移位<<
每一位向左移x位
例如:
a = 0x00000001 a<<2 这时a = 0x00000100
右移位>>
类似左移位